local ClientOHOH = _G.ClientOHOH;

local M = ClientOHOH.class.new(script, ClientOHOH.files.OHOHOLYBUIBase());
local CommonOHOH =_G.CommonOHOH
local CallBackManager = ClientOHOH.load.CallBackManager();
local BtnHelper = ClientOHOH.load.BtnHelper();
local LanguageHelper=_G.LanguageHelper;
local ConnectClass=_G.CommonOHOH.load.Connect();
function InitInsts(ui)
	ui.insts = {
        close="ctrl.closeBtn"        
    };
end;

function M.new(...)
	return M(...);
end;
function M.ctor(self)
	InitInsts(self)

  self.CellClickEvent=ConnectClass.new()      -- 单元被点击

  self.SellEvent=ConnectClass.new();          --售卖 (list)

  self.BestEquipEvent=ConnectClass.new();    --装备最佳
  self.MergeAllEvent=ConnectClass.new();  --合成所有
  self.MergeOneEvent=ConnectClass.new();  --合成所有(id)

  self.UnEquipAllEvent=ConnectClass.new();        --卸载所有
  self.UnEquipEvent=ConnectClass.new();  -- 卸载某个


  self.EquipEvent=ConnectClass.new();  -- 装备（list）

  self.BuyPackEvent=ConnectClass.new();  --购买背包容量
  self.BuyEquipEvent=ConnectClass.new();  --购买装备数量

  self.StatusChangeEvent=ConnectClass.new();  --  切换状态

  
  M.super.ctor(self, ClientOHOH:GetPath_Loop("ReplicatedStorage.Resource.UI.PetGui"));

  CallBackManager:AddRbxConnect(self,self.insts.close.Activated, function()
      self:Hide();
  end);

  self:Init()
end;


--来数据了进行初始化
function M.Init(self)
    self.RuleDes= require(script.RuleDes).new(self)
    self.TopInfo= require(script.TopInfo).new(self)  --背包，装备数量信息
    self.List= require(script.List).new(self)  --创建列表
    self.Details= require(script.Details).new(self) --创建详情页

    
    self.StatusUi={
        equip=require(script.EquipStatus).new(self),
        lock=require(script.LockStatus).new(self),
        sell=require(script.SellStatus).new(self),
    }
  self:ShowOnlyStatu("equip")
end 


function M.ShowOnlyStatu(self,id)
  for i,s in pairs(self.StatusUi) do
      if i==id then
          s:Show()
      else
          s:Hide()
      end
  end

  self.StatusChangeEvent:Action(id)
end

function M.ShowStatus(self,...)
  local list={...}
  for _,id in pairs(list) do
    self.StatusUi[id]:Show()
  end
end

function M.HideStatus(self,...)
  local list={...}
  for _,id in pairs(list) do
    self.StatusUi[id]:Hide()
  end
end

function M.GetList(self)
  return  self.List
end


function M.GetDetails(self)
  return  self.Details
end


function M.CellClick(self,cell)
  self.CellClickEvent:Action(cell)

  if self.StatusUi.equip:IsShowing() then -- 正常装备装备
      self.StatusUi.equip:Change(cell)
  elseif  self.StatusUi.sell:IsShowing() then --售卖状态
      self.StatusUi.sell:Change(cell)
  elseif  self.StatusUi.lock:IsShowing() then --锁定状态
        self.StatusUi.lock:Change(cell)
  end
end



function M.GetAllCell(self)
    return  self.List:GetAllCell()
end

function M.dtor(self)
	M.super.dtor(self);
end;

function M.SetDataBase(self,dataBase)
    self.DataBase=dataBase
end



------------------------对外调用接口-----------------------------------------
-- 获取玩家数据库
function M.GetDataBase(self)
  return self.DataBase
end

function M.UpdateEquipSlotsInfo(self,now,max)
  self.TopInfo:UpdateSlotsEquip(now,max)
end

function M.UpdatePackInfo(self,now,max)
  self.TopInfo:UpdatePetPack(now,max)
end

function M.UpdateEquip(self,equip)

    self.List:UpdateEquip(equip)
    self.TopInfo:UpdateEquip(equip)
end

function M.UpdateHad(self,had)
    self.List:UpdateCell(had)
    self.TopInfo:UpdateHad(had)
end



return M